/*
  数组的实例方法：
      some(callback)
       作用：检测/判断 数组中是否存在满足指定条件的元素
       返回：如果存在，则返回true；否则（都不满足条件）返回false
       执行流程：检测到一个满足条件的就停止了，否则继续检测
       语法：array.some((item, index, arr) => {
          return 布尔值
          ? return true：表示item符合条件，返回true；
          ? return false：表示 item 不符合条件，继续检测
       })
 */
// 1. 基本类型
const beauty = ['西施', '貂蝉', '杨玉环', '王昭君', '杨幂']
// 检测beauty数组中是否存在 姓杨的
// const result = beauty.some(item => {
//   console.log('omg', item)
//   return item.startsWith('杨')
// })
// console.log(result)// ? true
// 检测beauty数组中是否存在 姓古的

// const result = beauty.some(item => {
//   console.log('omg', item)
//   return item.startsWith('古')
// })
// console.log(result)// ? false

const waistlines = [55, 43, 70, 58]

// 找出  waistlines数组中 是否存在 腰围 在 60 以上的
// let result = waistlines.some(item => item > 60)
// console.log(result)// true
// 找出  waistlines数组中 是否存在 腰围 在 80 以上的
// result = waistlines.some(item => item > 80)
// console.log(result)// false



// 2. 引用类型
const girls = [
  {
    name: '王昭君',
    height: 170
  }, {
    name: '貂蝉',
    height: 172
  }, {
    name: '西施',
    height: 162
  }, {
    name: '杨玉环',
    height: 169
  }
]
// 找出数组中是否存在 身高  165 以上的
// const result = girls.some(item => item.height > 165)
// console.log(result)
// 找出数组中是否存在 身高  180 以上的
// const result = girls.some(item => item.height > 180)
// console.log(result)// false

// some方法的原理
Array.prototype._some = function (callback) {
  for (let i = 0; i < this.length; i++) {
    if (callback(this[i], i, this)) {
      return true
    }
  }
  return false
}

const result1 = girls._some(item => item.height > 165)
console.log(result1)// ? true

const result2 = girls._some(item => item.height > 180)
console.log(result2)// ? false




